home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xalan.jar / org / apache / xalan / xslt / TreeWalker2Result.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-12  |  2.6 KB  |  69 lines

  1. package org.apache.xalan.xslt;
  2.  
  3. import org.apache.xalan.xpath.xml.TreeWalker;
  4. import org.w3c.dom.Attr;
  5. import org.w3c.dom.Element;
  6. import org.w3c.dom.NamedNodeMap;
  7. import org.w3c.dom.Node;
  8. import org.xml.sax.SAXException;
  9.  
  10. class TreeWalker2Result extends TreeWalker {
  11.    ElemTemplateElement m_elem;
  12.    XSLTEngineImpl m_processor;
  13.    Node m_startNode;
  14.  
  15.    public TreeWalker2Result(XSLTEngineImpl var1, ElemTemplateElement var2) {
  16.       super(var1.m_resultTreeHandler);
  17.       this.m_elem = var2;
  18.       this.m_processor = var1;
  19.    }
  20.  
  21.    public void traverse(Node var1) throws SAXException {
  22.       this.m_startNode = var1;
  23.       super.traverse(var1);
  24.    }
  25.  
  26.    protected void startNode(Node var1) throws SAXException {
  27.       if (var1.getNodeType() == 1 && this.m_startNode == var1) {
  28.          String var2 = var1.getNodeName();
  29.          this.m_processor.m_resultTreeHandler.startElement(var2);
  30.  
  31.          for(Node var3 = var1; var3 != null; var3 = var3.getParentNode()) {
  32.             if (var3.getNodeType() == 1) {
  33.                NamedNodeMap var4 = ((Element)var3).getAttributes();
  34.                int var5 = var4.getLength();
  35.  
  36.                for(int var6 = 0; var6 < var5; ++var6) {
  37.                   String var7 = null;
  38.                   Attr var8 = (Attr)var4.item(var6);
  39.                   String var9 = var8.getName();
  40.                   String var10 = var8.getValue();
  41.                   if (var9.startsWith("xmlns:")) {
  42.                      var7 = var9.substring(var9.indexOf(":") + 1);
  43.                   } else if (var9.equals("xmlns")) {
  44.                      var7 = "";
  45.                   }
  46.  
  47.                   if ((var7 != null || var1 == var3) && !this.m_processor.m_pendingAttributes.contains(var9)) {
  48.                      if (var7 == null) {
  49.                         this.m_processor.m_pendingAttributes.addAttribute(var9, "CDATA", var10);
  50.                      } else {
  51.                         String var11 = this.m_processor.getResultNamespaceForPrefix(var7);
  52.                         if (var11 == null) {
  53.                            this.m_processor.m_pendingAttributes.addAttribute(var9, "CDATA", var10);
  54.                         } else if (!var11.equals(var10)) {
  55.                            this.m_processor.m_pendingAttributes.addAttribute(var9, "CDATA", var10);
  56.                         }
  57.                      }
  58.                   }
  59.                }
  60.             }
  61.          }
  62.  
  63.          this.m_elem.processResultNS(this.m_processor);
  64.       } else {
  65.          super.startNode(var1);
  66.       }
  67.    }
  68. }
  69.